//package com.xlf.service.judge.io.impl;
//
//import cn.hutool.core.io.FileUtil;
//import cn.hutool.core.io.file.FileReader;
//import cn.hutool.core.util.CharsetUtil;
//import cn.hutool.json.JSON;
//import cn.hutool.json.JSONArray;
//import cn.hutool.json.JSONObject;
//import cn.hutool.json.JSONUtil;
//import com.xlf.common.core.exception.BizException;
//import com.xlf.common.core.util.StringUtils;
//import com.xlf.common.core.util.file.UploadConfig;
//import com.xlf.pojo.base.ProblemCase;
//import com.xlf.pojo.constant.Constants;
//import com.xlf.service.judge.io.Resource;
//
//import java.io.File;
//import java.io.InputStream;
//import java.nio.charset.StandardCharsets;
//import java.util.*;
//import java.util.concurrent.atomic.AtomicInteger;
//
//import static com.xlf.pojo.constant.Constants.File.TESTCASE_BASE_FOLDER;
//
///**
// * @Author xlf 2734029211@qq.com
// * @Date 2023/9/18 15:02
// * @Description: TODO 直接从系统文件中加载测试用例
// * @Version 1.0
// */
//public class FileSystemResource implements Resource {
//
//
//    private String filePath;
//
//    public static String testCase = "testCase";
//
//    public static String testCaseInfo = "testCaseInfo.json";
//    /**
//     *
//     * @param problemId
//     */
//    public FileSystemResource(Long problemId){
//        filePath = UploadConfig.getLocalPath() + TESTCASE_BASE_FOLDER +  File.separator + problemId.toString();
//    }
//
//    @Override
//    @Deprecated
//    public List<ProblemCase> getCase() {
//
//        if(!FileUtil.exist(filePath))
//            throw new BizException(filePath  + "：测试用例文件夹不存在");
//
//        //测试用例分数信息json文件
//        File testCaseInfoFile = new File(filePath +  File.separator + testCaseInfo);
//
//        //测试用例文件夹
//        File testCases = new File(filePath + File.separator + testCase);
//
//        if(!FileUtil.exist(testCases) || testCases.length() == 0)
//            throw new BizException(filePath + "：测试用例为空！");
//
//        ArrayList<ProblemCase> problemCases = getProblemCases(testCases,testCaseInfoFile);
//
//        return problemCases;
//
//    }
//
//    /**
//     * 解析文件夹里面的文件并生成获取测试用例
//     * @param testCaseFileList 测试用例文件夹
//     * @return 测试用例列表
//     */
//    public ArrayList<ProblemCase> getProblemCases(File testCaseFileList,File testCaseInfoFile) {
//
//        File[] files = testCaseFileList.listFiles();
//        if (files == null || files.length == 0) {
//            return new ArrayList<>();
//        }
//
//        Map<String, File> inputData = new TreeMap<>();
//
//        Map<String, File> outputData = new HashMap<>();
//
//        // 遍历读取与检查是否in和out文件一一对应，否则报错
//        for (File tmp : files) {
//            String tmpPreName = null;
//            if (tmp.getName().endsWith(".in")) {
//                tmpPreName = tmp.getName().substring(0, tmp.getName().lastIndexOf(".in"));
//                inputData.put(tmpPreName, tmp);
//            } else if (tmp.getName().endsWith(".out")) {
//                tmpPreName = tmp.getName().substring(0, tmp.getName().lastIndexOf(".out"));
//                outputData.put(tmpPreName, tmp);
//            } else if (tmp.getName().endsWith(".ans")) {
//                tmpPreName = tmp.getName().substring(0, tmp.getName().lastIndexOf(".ans"));
//                outputData.put(tmpPreName, tmp);
//            } else if (tmp.getName().endsWith(".txt")) {
//                tmpPreName = tmp.getName().substring(0, tmp.getName().lastIndexOf(".txt"));
//                if (tmpPreName.contains("input")) {
//                    inputData.put(tmpPreName.replaceAll("input", "*"), tmp);
//                } else if (tmpPreName.contains("output")) {
//                    outputData.put(tmpPreName.replaceAll("output", "*"), tmp);
//                }
//            }
//        }
//
//        ArrayList<ProblemCase> problemCases = new ArrayList<>();
//
//        if(StringUtils.isEmpty(inputData))
//            return problemCases;
//
//        /**
//         * {
//         * 文件名 ： 分数
//         *  1 : 100,
//         *  2 : 200,
//         *  3 : 300
//         * }
//         */
//        JSONArray testCaseInfo = new JSONArray();
//        if(testCaseInfoFile.exists())
//            testCaseInfo = JSONUtil.readJSONArray(testCaseInfoFile, StandardCharsets.UTF_8);
//
//        AtomicInteger seq = new AtomicInteger(1);
//
//        HashMap<String, JSONObject> hashMap = new HashMap<>();
//
//        for (Object item : testCaseInfo) {
//            (JSONObject)item
//        }
//        final JSONObject finalTestCaseInfo = testCaseInfo;
//
//        inputData.forEach((k, v) ->{
//            String input = FileUtil.readUtf8String(v);
//            String output = null;
//            if(outputData.containsKey(k)){
//                output = FileUtil.readUtf8String(outputData.get(k));
//            }
//            ProblemCase problemCase = new ProblemCase();
//            problemCase.setInput(input);
//            problemCase.setOutput(output);
//            problemCase.setSeq(seq.getAndIncrement());
//            problemCase.setScore(Optional.ofNullable(finalTestCaseInfo.getInt(k)).orElse(10));
//            problemCases.add(problemCase);
//        });
//
//        return problemCases;
//    }
//
//
//}
